/*
  1 输入框绑定 值改变事件 input事件
    1 获取到输入框的值
    2 合法性判断
    3 检测通过 把输入框的值 发送到后台
    4 返回的数据打印到页面上
  2 防抖 (防止抖动) 定时器 节流
    0 防抖 一般 输入框中 防止重复输入 重复发送请求
    1 节流 一般是用在页面下拉和上拉
    1 定义全局的定时器id

*/

import { request } from "../../request/index.js"
//这里使用ES7 的async await 需要这个,不能app.js全局使用,必须单独使用
//https://github.com/yangsuai/regeneratorRuntime
import regeneratorRuntime from '../../lib/runtime/runtime.js';
Page({

  /**
   * 页面的初始数据
   */
  data: {
    goods:[],
    //取消按钮是否显示
    isFocus:false,
    //输入框的值
    inputValue:""
  },
  TimeId:-1,
  //输入框的值改变了就会触发事件
  handleInput(e){
    //获取输入框的值
    const {value} = e.detail;
    //检测合法性
    if(!value.trim()){
      //当输入框里没有值的时候隐藏取消按钮
      this.setData({ 
        goods: [],
        isFocus: false
        });

      //值不合法
      return;
    }
    //当输入框里有值的时候显示取消按钮
    this.setData({isFocus:true});

    //延迟发送请求防止用户没有输入完就发起请求
    clearTimeout(this.TimeId);
    this.TimeId = setTimeout(()=>{

      //准备发送请求获取数据
      this.qsearch(value);

    },1000);
    
  },
  //发送请求获取搜索建议 数据
  async qsearch(query){
    const res = await request({ url:"/goods/qsearch",data:{query}});
    this.setData({goods:res})
  },
  //点击取消按钮
  handleCannel(e){
    this.setData({ 
      inputValue:'',
      isFocus:false,
      goods:[]
      })
  },
  onShow: function () {

  },

  
})